//
//  NSString+ACExt.h
//  ACFramework
//
//  Created by caoyq on 2018/5/23.
//  Updated by caoyq on 2018/6/22.
//

#import <Foundation/Foundation.h>

@interface NSString (ACExt)

#pragma mark - 判空

/**
 * 判断字符串是否为null

 @param string 字符串
 @return BOOL
 */
+ (BOOL)ac_isNullString: (NSString *)string;

/**
 * 判断字符串是否为空

 @param string 字符串
 @return BOOL
 */
+ (BOOL)ac_isEmptyString:(NSString*)string;

#pragma mark - 位置

/**
 获取字符串中某子串的所有位置.
 
 系统方法：rangeOfString 只能获取第一个位置，该方法是获取所有的位置

 @param string 子串
 @return 数组 @[NSValue of Range]
 */
- (NSArray *)rangesOfSubString: (NSString *)string;

#pragma mark - 文字编码

/**
 汉字进行UTF8转码. 如： @"你好" -> @"%E4%BD%A0%E5%A5%BD"

 @return 转码后字符串
 */
- (NSString *)ac_UTF8Encode;

/**
 汉字进行UTF8解码. 如："%E4%BD%A0%E5%A5%BD" -> @"你好"

 @return 解码后的汉字
 */
- (NSString *)ac_UTF8Decode;

#pragma mark - 文字宽高

/**
 根据字体大小计算文字size.

 @param font 文字大小
 @return size.
 */
- (CGSize)ac_textSizeWithFont: (UIFont *)font;

/**
 计算文字高度

 @param width 布局的宽度
 @param font 字体大小
 @return 文字高度
 */
- (CGFloat)ac_textHeightWithWidth: (CGFloat)width font: (UIFont *)font;

#pragma mark - 属性文字

/**
 给文字添加删除线样式

 @param color 删除线的颜色
 @return instance of NSString.
 */
- (NSAttributedString *)ac_addStrikethroughWithColor: (UIColor *)color;

/**
 给文字添加颜色

 @param color UIColor 对象
 @param range NSRange
 @return 属性文字
 */
- (NSMutableAttributedString *)ac_setColor: (UIColor *)color range: (NSRange)range;

/**
 给文字设置不同大小

 @param font 字体大小
 @param range 范围
 @return 属性文字
 */
- (NSMutableAttributedString *)ac_setFont: (UIFont *)font range: (NSRange)range;

/**
 给文字添加不同的颜色.
 
 当颜色和范围传入数量不一致，则取最小值.

 @param colors 颜色数组(UIColor *)
 @param rangeArray 范围数组(@(NSRange))
 @return instance of NSString.
 */
- (NSMutableAttributedString *)ac_setColors: (NSArray *)colors ranges: (NSArray *)rangeArray;

/**
 给文字不同位置设置不同颜色、字体大小.

 @param colors 颜色数组(UIColor *)
 @param fonts  字体大小数组(UIFont *)
 @param ranges 范围数组(@(NSRange))
 @return instance of NSString.
 */
- (NSMutableAttributedString *)ac_setColors:(NSArray *)colors font:(NSArray *)fonts range:(NSArray *)ranges;

@end
